package org.grottarossa.ui.core;

import java.util.ResourceBundle;

import org.grottarossa.template.drivers.DriverException;
import org.grottarossa.template.drivers.DriverException.ErrorCode;
import org.grottarossa.ui.core.i18n.DM;


import com.vaadin.ui.Window;
import com.vaadin.ui.Window.Notification;

/***
 * Si occupa di mostrare i messaggi di notifica a video
 * @author 
 *
 */
public class Notifier
{
	protected ResourceBundle m_localizer = DM.instance().getBundle(getClass().getPackage().getName() + ".ErrorMessages");
	private final Window m_mainWindow;

	public Notifier(Window mainWindow)
	{
		this.m_mainWindow = mainWindow;
	}

	/***
	 * Mostra un messaggio di warning su una finestra
	 * @param message Messaggio da mostrare
	 */
	public void showWarning(String message)
	{
		m_mainWindow.showNotification(message, Notification.TYPE_WARNING_MESSAGE);
	}

	/***
	 * Mostra un messaggio di errore su una finestra
	 * @param message Messaggio da mostrare
	 */
	public void showError(String message)
	{
		m_mainWindow.showNotification(message, Notification.TYPE_ERROR_MESSAGE);
	}

	/***
	 * Mostra un messaggio di errore relativo ad un'eccezione
	 * @param ex Eccezione da notificare
	 */
	public void showError(Exception ex)
	{
		String message = ex.toString();

		if(ex instanceof DriverException)
		{
			try
			{
				if(((DriverException)ex).getErrorCode() == ErrorCode.KO)
					message = ex.getMessage();
				else
					message = m_localizer.getString("exception.driver." + ((DriverException)ex).getErrorCode().toString().toLowerCase());
			}
			catch(Exception e)
			{
				message = ex.toString();
			}

		}

		showError(message);
	}

	/***
	 * Mostra un messaggio informativo su una finestra
	 * @param message Messaggio da mostrare
	 */
	public void showInfo(String message)
	{
		m_mainWindow.showNotification(message, Notification.TYPE_HUMANIZED_MESSAGE);
	}
}
